iT邦幫忙

2024 iThome 鐵人賽

DAY 8
1
佛心分享-SideProject30

從零開始打造超邊緣AI應用系列 第 8

Day 8 - 開始使用 X.Cube.AI 插件

  • 分享至 

  • xImage
  •  

前言

今天開始要進入部署至 MCU 上的過程,會使用 CubeMX 產生出 Template 以後來研究,究竟要後續要怎麼去做實際的應用。

今天需要準備的設備是電腦一台+B-U585I-IOT02A 開發板以及其連接線。

使用 CubeMX 產出 Template

還記得上次透過 CubeMX 產出的 UART 測試 Code 嗎?今天就會繼續使用那份檔案開始。
首先先打開 CubeMX 專案檔(.ioc檔案),點開左邊選單欄的 Middleware and Software Packs,找到 X-CUBE-AI 這個選項點下去,會彈出底下這個視窗:
https://ithelp.ithome.com.tw/upload/images/20240922/2016892797NdYpcgZc.png

這次我們是為了快速驗證結果,所以先選擇 AI core 以及 Application 中的 SystemPerformance 選項。按下確認後,再次點選左邊側邊欄的 X-CUBE-AI ,並且點選右上角的 "Add network" 選項就會看到底下的樣子:
https://ithelp.ithome.com.tw/upload/images/20240922/20168927uSuK0fOMET.png

另外在選擇 X-Cube-AI 插件後,CubeMX 可能會問你是否要把系統的參數調成最佳化(基本上就是把頻率調最高),這邊按確認即可(但有些板子就會出現一些問題...例如比較複雜的 H7 系列)

接著就可以加入 Model 的選項,這次選擇的依然是從 ST-Model Zoo 載下來的 EfficientNet,Int8版本,接著就跟前面的使用雲端版的差不多,注意的是右邊的小齒輪點開以後可以針對更細節的 RAM 和 FLASH 做設置:(如下圖,但這次先都不勾任何選項)
https://ithelp.ithome.com.tw/upload/images/20240922/20168927KhpWdidHAA.png

當都選擇玩按下 Analyze 以後就會跳出這個視窗(如下圖)或是右上角的 Setting 關掉以後他也會自己跳出來...我自己覺得這個比較像是 bug:
https://ithelp.ithome.com.tw/upload/images/20240922/20168927psEspGszwK.png

跑完按確認以後就可以得到如下的結果:
https://ithelp.ithome.com.tw/upload/images/20240922/201689276nB52UfdJX.png

這邊介紹幾個重點,如果有給出 validation 的資料的話,按下 validation 以後就可以進行驗證和得到結果,但其實我覺得自己在訓練和自己壓縮的時候做會比較方便,之後會用(應該?)
而 Showgraph 就會叫出 Netron 的圖形化介面,能夠很清楚地看到模型的結構以及輸入輸出大小,左下角有個小按鈕可以切換成 Memory layout:
https://ithelp.ithome.com.tw/upload/images/20240922/20168927iLubI9EUNj.png
https://ithelp.ithome.com.tw/upload/images/20240922/20168927qjrRgY78VC.png

接著按下 GENERATE CODE 以後就能夠回到程式碼的頁面,然後一樣進行編譯。
(但這邊如果是使用自動生成的 CMake,我自己是會碰到 CubeMX 產出來的 CMakeLists 會有一些include 上的錯誤,可能需要手動調整。)

接著編譯以及燒錄以後,可以接上 UART1(也就是On-board STLink,同時具有 TTL 轉 USB 的功能),就能看到以下輸出:
https://ithelp.ithome.com.tw/upload/images/20240922/20168927LOsbTbt2IJ.png

這邊這個程式會自動使用隨機輸入跑模型 16 次,並且取得推理的表現平均值,如下圖:
https://ithelp.ithome.com.tw/upload/images/20240922/20168927aXv2xf1YcW.png

這個功能好用在哪呢?今天如果我需要快速評估手上的開發板對於目前模型的適配性,這個就能夠快速得到結果。
另外是如果我今天想要針對目前的程式進行加速或修改(例如更改模型架構,或是針對 MCU 硬體設備上的優化修改)這個也能快速的進行實驗並得到結果。

今天就先與大家分享到這邊,明天就會開始比較深入的去看究竟這個程式是怎麼去進行推理的,請各位敬請期待~


上一篇
Day 7 - 接下來的規劃與打算
下一篇
DAY 9 - 分析 X-Cube-AI 程式碼
系列文
從零開始打造超邊緣AI應用13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言